`timescale    1ps/1ps
`default_nettype none
module RGMII_rec_io(
    input  wire        rxc,
    input  wire        rxdv,
    input  wire [3:0]  rxd,

    output wire        rx_clk,
    output reg         rx_dv,
    output reg  [7:0]  rx_data,

    output reg         rx_er,
    output reg         rx_crs,
    output reg         rx_col
    );

//*******************************************/
//        信号定义
//*******************************************/
wire        rxc_temp,rxdv_temp;
wire [3:0]  rxd_temp;
wire        rx_dv_temp,rx_er_temp;
wire [7:0]  rx_data_temp;

//*******************************************/
//        rxc处理
//*******************************************/
assign rx_clk=rxc;

//*******************************************/
//        DDR INPUT
//*******************************************/

//****************rxdv*****************/
iddr_1bit    iddr_1bit_inst (
    .datain ( rxdv ),
    .inclock ( rx_clk ),
    .dataout_h ( rx_er_temp ),
    .dataout_l ( rx_dv_temp )
    );

//****************rxd*****************/
iddr    iddr_inst (
    .datain ( rxd),
    .inclock ( rx_clk ),
    .dataout_h ( rx_data_temp[7:4] ),
    .dataout_l ( rx_data_temp[3:0] )
    );
    
//*******************************************/
//        二次处理
//*******************************************/
always@(posedge rx_clk)
    rx_dv<=rx_dv_temp;
        
always@(posedge rx_clk)
    rx_data<=rx_data_temp;

always@(posedge rx_clk)
    rx_er<=(rx_er_temp^rx_dv_temp);

always@(posedge rx_clk)
    rx_crs<=(rx_er_temp|rx_dv_temp);

always@(posedge rx_clk)
    rx_col<=1'b0;

endmodule

`default_nettype wire
